home *** CD-ROM | disk | FTP | other *** search
/ Openstep 4.2 (Developer) / Openstep Developer 4.2.iso / NextDeveloper / Source / GNU / perl / Perl / ext / SDBM_File / sdbm / dbm.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-10-18  |  2.4 KB  |  121 lines

  1. /*
  2.  * Copyright (c) 1985 The Regents of the University of California.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms are permitted
  6.  * provided that the above copyright notice and this paragraph are
  7.  * duplicated in all such forms and that any documentation,
  8.  * advertising materials, and other materials related to such
  9.  * distribution and use acknowledge that the software was developed
  10.  * by the University of California, Berkeley.  The name of the
  11.  * University may not be used to endorse or promote products derived
  12.  * from this software without specific prior written permission.
  13.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  14.  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  15.  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  16.  */
  17.  
  18. #ifndef lint
  19. static char sccsid[] = "@(#)dbm.c    5.4 (Berkeley) 5/24/89";
  20. #endif /* not lint */
  21.  
  22. #include    "dbm.h"
  23.  
  24. #define    NODB    ((DBM *)0)
  25.  
  26. static DBM *cur_db = NODB;
  27.  
  28. static char no_db[] = "dbm: no open database\n";
  29.  
  30. dbminit(file)
  31.     char *file;
  32. {
  33.     if (cur_db != NODB)
  34.         dbm_close(cur_db);
  35.  
  36.     cur_db = dbm_open(file, 2, 0);
  37.     if (cur_db == NODB) {
  38.         cur_db = dbm_open(file, 0, 0);
  39.         if (cur_db == NODB)
  40.             return (-1);
  41.     }
  42.     return (0);
  43. }
  44.  
  45. long
  46. forder(key)
  47. datum key;
  48. {
  49.     if (cur_db == NODB) {
  50.         printf(no_db);
  51.         return (0L);
  52.     }
  53.     return (dbm_forder(cur_db, key));
  54. }
  55.  
  56. datum
  57. fetch(key)
  58. datum key;
  59. {
  60.     datum item;
  61.  
  62.     if (cur_db == NODB) {
  63.         printf(no_db);
  64.         item.dptr = 0;
  65.         return (item);
  66.     }
  67.     return (dbm_fetch(cur_db, key));
  68. }
  69.  
  70. delete(key)
  71. datum key;
  72. {
  73.     if (cur_db == NODB) {
  74.         printf(no_db);
  75.         return (-1);
  76.     }
  77.     if (dbm_rdonly(cur_db))
  78.         return (-1);
  79.     return (dbm_delete(cur_db, key));
  80. }
  81.  
  82. store(key, dat)
  83. datum key, dat;
  84. {
  85.     if (cur_db == NODB) {
  86.         printf(no_db);
  87.         return (-1);
  88.     }
  89.     if (dbm_rdonly(cur_db))
  90.         return (-1);
  91.  
  92.     return (dbm_store(cur_db, key, dat, DBM_REPLACE));
  93. }
  94.  
  95. datum
  96. firstkey()
  97. {
  98.     datum item;
  99.  
  100.     if (cur_db == NODB) {
  101.         printf(no_db);
  102.         item.dptr = 0;
  103.         return (item);
  104.     }
  105.     return (dbm_firstkey(cur_db));
  106. }
  107.  
  108. datum
  109. nextkey(key)
  110. datum key;
  111. {
  112.     datum item;
  113.  
  114.     if (cur_db == NODB) {
  115.         printf(no_db);
  116.         item.dptr = 0;
  117.         return (item);
  118.     }
  119.     return (dbm_nextkey(cur_db, key));
  120. }
  121.